home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 7 / Apprentice-Release7.iso / Source Code / C / Applications / Python 1.4 / Python 1.4 source / Mac / Lib / findmodulefiles.py < prev    next >
Encoding:
Python Source  |  1996-10-16  |  2.1 KB  |  81 lines  |  [TEXT/Pyth]

  1. """Findmodulefiles - Find out where modules are loaded from.
  2. Run findmodulefiles() after running a program with "python -i. The
  3. resulting file list can be given to mkfrozenresources or to a
  4. (non-existent) freeze-like application."""
  5.  
  6. def findmodulefiles(output=None):
  7.     """Produce a file containing a list of (modulename, filename-or-None)
  8.     tuples mapping module names to source files"""
  9.     # Immedeately grab the names
  10.     import sys
  11.     module_names = sys.modules.keys()[:]
  12.     import os
  13.     if not output:
  14.         if os.name == 'mac':
  15.             import macfs
  16.             
  17.             output, ok = macfs.StandardPutFile('Module file listing output:')
  18.             if not ok: sys.exit(0)
  19.             output = output.as_pathname()
  20.     if not output:
  21.         output = sys.stdout
  22.     elif type(output) == type(''):
  23.         output = open(output, 'w')
  24.     output.write('[\n')
  25.     for name in module_names:
  26.         try:
  27.             source = sys.modules[name].__file__
  28.         except AttributeError:
  29.             source = None
  30.         else:
  31.             source = `source`
  32.         output.write('\t(%s,\t%s),\n' % (`name`, source))
  33.     output.write(']\n')
  34.     del output
  35.     
  36. def findunusedbuiltins(list):
  37.     """Produce (on stdout) a list of unused builtin modules"""
  38.     import sys
  39.     dict = {}
  40.     for name, location in list:
  41.         if location == None:
  42.             dict[name] = 1
  43.     for name in sys.builtin_module_names:
  44.         if not dict.has_key(name):
  45.             print 'Unused builtin module:', name
  46.             
  47.  
  48. def mkpycresourcefile(list, main='', dst=None):
  49.     """Copy list-of-modules to resource file dst."""
  50.     import py_resource
  51.     import Res
  52.     import sys
  53.     
  54.     if dst == None:
  55.         import macfs
  56.         fss, ok = macfs.StandardPutFile("PYC Resource output file")
  57.         if not ok: sys.exit(0)
  58.         dst = fss.as_pathname()
  59.     if main == '':
  60.         import macfs
  61.         fss, ok = macfs.PromptGetFile("Main program:", "TEXT")
  62.         if ok:
  63.             main = fss.as_pathname()
  64.     
  65.     fsid = py_resource.create(dst)
  66.  
  67.     if main:
  68.         id, name = py_resource.frompyfile(main, '__main__')
  69.         print '%5d\t%s\t%s'%(id, name, main)
  70.     for name, location in list:
  71.         if not location: continue
  72.         if location[-3:] != '.py':
  73.             print '*** skipping', location
  74.             continue
  75.         id, name = py_resource.frompyfile(location, name)
  76.         print '%5d\t%s\t%s'%(id, name, location)
  77.  
  78.     Res.CloseResFile(fsid)
  79.  
  80.             
  81.